package Fragments;

import java.awt.font.NumericShaper;
import java.util.ArrayList;
import java.util.List;

import com.example.tdam_2013_g11.InicioActivity;
import com.example.tdam_2013_g11.R;

import Adaptadores.InfoContactoExpandableListAdapter;
import Clases.Contacto;
import Clases.Dato;
import Clases.OpcionesDisponibles;
import Complementos.TiposDeDatos;
import android.app.ExpandableListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.IInterface;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.TextView;

public class FragmentInfoContacto extends Fragment{
	public static FragmentInfoContacto contexto;
	ExpandableListView lista;
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		contexto = this;
		// Inflate the layout for this vifragment
		return inflater.inflate(R.layout.fragment_info_contacto, container, false);
	}
	
	public void onActivityCreated (Bundle savedInstanceState){
		Bundle args = getArguments();
		Contacto contacto = setDatos((Contacto)args.getParcelable("Contacto"));
		TextView nombreContacto = (TextView) getActivity().findViewById(R.id.textView_nombre);
		nombreContacto.setText(contacto.getNombre());
		lista = (ExpandableListView)getActivity().findViewById(R.id.expandableListView_listaOpciones);
		
		final List<OpcionesDisponibles> opciones = new ArrayList<OpcionesDisponibles>();
		ArrayList<Dato> prueba = new ArrayList<Dato>();
		prueba.add(new Dato(TiposDeDatos.EMAIL, "martinvaldez89@gmail.com"));
		
		ArrayList<Dato> prueba2 = new ArrayList<Dato>();
		prueba2.add(new Dato(TiposDeDatos.USUARIO, "MartinOnline"));

		OpcionesDisponibles opcionLlamar = new OpcionesDisponibles();
		opcionLlamar.setTipoDeOperacion(TiposDeDatos.OPERACION_LLAMADA);
		opcionLlamar.setNombre("Llamar");
		opcionLlamar.setIcono(R.drawable.icon_llamada);
		opcionLlamar.setOpciones(contacto.getNumerosHablar());
		opciones.add(opcionLlamar);

		if(contacto.getNumerosCelular().size() != 0){
			OpcionesDisponibles opcionMensaje = new OpcionesDisponibles();
			opcionMensaje.setTipoDeOperacion(TiposDeDatos.OPERACION_MENSAJE);
			opcionMensaje.setNombre("Mensaje");
			opcionMensaje.setIcono(R.drawable.icon_mensaje);
			opcionMensaje.setOpciones(contacto.getNumerosCelular());
			opciones.add(opcionMensaje);
		}
		
		OpcionesDisponibles opcionEmail = new OpcionesDisponibles();
		opcionEmail.setTipoDeOperacion(TiposDeDatos.OPERACION_EMAIL);
		opcionEmail.setNombre("Email");
		opcionEmail.setIcono(R.drawable.icon_email);
		opcionEmail.setOpciones(prueba);
		opciones.add(opcionEmail);

		OpcionesDisponibles opcionMensajeInternet = new OpcionesDisponibles();
		opcionMensajeInternet.setTipoDeOperacion(TiposDeDatos.OPERACION_MENSAJE_INTERNET);
		opcionMensajeInternet.setNombre("Mensaje Internet");
		opcionMensajeInternet.setIcono(R.drawable.icon_mensaje_web);
		opcionMensajeInternet.setOpciones(prueba2);
		opciones.add(opcionMensajeInternet);
		
		InfoContactoExpandableListAdapter adaptador = new InfoContactoExpandableListAdapter(getActivity().getApplicationContext(), opciones);
		lista.setAdapter(adaptador);

		lista.setOnChildClickListener(new OnChildClickListener() {
			 
            @Override
            public boolean onChildClick(ExpandableListView parent, View v,
                    int groupPosition, int childPosition, long id) {
            	Dato seleccionado = opciones.get(groupPosition).getOpciones().get(childPosition);

            	if(opciones.get(groupPosition).getTipoDeOperacion() == TiposDeDatos.OPERACION_LLAMADA){
                	Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + seleccionado.getValor()));
                	startActivity(intent);
            	}
            	return false;
            }
        });
		super.onActivityCreated(savedInstanceState);
	}
	
	public Contacto setDatos(Contacto contacto){
		List<Dato> datos = new ArrayList<Dato>();
		
		Cursor cursor_phone = getActivity().getContentResolver().query(Phone.CONTENT_URI, null, Phone.DISPLAY_NAME + " = '" + contacto.getNombre() + "'", null, null);
		while (cursor_phone.moveToNext()) {
			String numero = cursor_phone.getString(cursor_phone.getColumnIndex(Phone.NUMBER));
			int PHONE_TYPE = cursor_phone.getInt(cursor_phone.getColumnIndex(Phone.TYPE));
			 
		  switch (PHONE_TYPE) {
			   case Phone.TYPE_HOME:
				   datos.add(new Dato(TiposDeDatos.HOME, numero));
			    break;
			   case Phone.TYPE_MOBILE:
				   datos.add(new Dato(TiposDeDatos.MOBILE, numero));
			    break;
			   case Phone.TYPE_WORK:
				   datos.add(new Dato(TiposDeDatos.WORK, numero));
			   break;
		   }
		}
		
		contacto.setDatos(datos);
		return contacto;
	}
}
